home *** CD-ROM | disk | FTP | other *** search
/ EnigmA Amiga Run 1995 November / EnigmA AMIGA RUN 02 (1995)(G.R. Edizioni)(IT)[!][issue 1995-11][Skylink CD].iso / earcd / midi / midifile.readme < prev    next >
Text File  |  1995-09-02  |  4KB  |  99 lines

  1. Short:    A DICE link library for reading, parsing and writing MIDI files Version 1.2
  2. Author:   ajung@cs.uni-sb (Andreas Jung)
  3. Uploader: ajung@cs.uni-sb (Andreas Jung)
  4. Type:     mus/midi
  5.  
  6. This directory contains a library of code to read and write standard 
  7. MIDI files, a standard as defined by the MMA, the MIDI Manufacturer's
  8. Assocation. The format spec is available from the IMA:
  9.  
  10.                 International MIDI Association
  11.                 5316 West 57th Street
  12.                 Los Angeles, CA 90056
  13.  
  14.  
  15. "make mftext" will compile a program that gives a verbose textual
  16. listing of a MIDI file, and is an example of how to read a file.  "make
  17. mf1to0" will compile a program that demonstrates how to write midi
  18. files, and converts format 1 multitrack files to format 0.  "make
  19. midifile.man" will produce a formatted manual page.  Example MIDI files
  20. are named "example*.uu".  They're uuencoded; "make uutomid" will
  21. uudecode them all.  The first two examples (example1 and example2) are
  22. the examples given in the 0.06 version of the standard MIDI file
  23. specification.
  24.  
  25.             ...Tim Thompson...att!twitch!glimmer!tjt...
  26.  
  27. June, 1989 - Added code to write midi files and the mf1to0 program.
  28.          Michael Czeiszperger  czei@pan.com
  29.  
  30. Notes on Porting:
  31. This library was written on UNIX, and tested on Sun's, PC's and Mac's.  
  32. It is distributed in a raw vanilla state, which means you may have to do a 
  33. little editing depending on the requirements of your particular development 
  34. system.  For instance, with THINK C on the Mac, you have to be careful 
  35. and include all the include files needed by their implementation of 
  36. UNIX calls such as malloc().  I've left in the proper calls ifdef'd on
  37. THINK so you'll have a clue what to do. 
  38.  
  39. czei@pan.com
  40.  
  41. -------------------------------------------------------------------------------
  42.  
  43. This code was ported from the orginal sources to Commodore Amiga system by
  44.                  
  45.                                  Andreas Jung
  46.                                 Klosterstr. 21
  47.                          D-66125 Saarbruecken, Germany
  48.                            Email: ajung@cs.uni-sb.de
  49.  
  50.  
  51. The following changes were made:
  52.  
  53.  - beautified the sources using indent
  54.  - removed most of the K&R declarations and replaced them by ANSI declarations
  55.  - fixed sources to use with DICE Professional
  56.  
  57. This package is distributed "as-is" under the GNU Public License.
  58.  
  59. I used part of the code in my program MIDI PERFORMANCE MANAGER - MPM. It seems
  60. to work fine. No bugs were found yet. The code does *NOT* support MIDI format 2
  61. files, only format 0 and 1 is supported !
  62.  
  63. ---------------------------------------------------------------------------------
  64.  
  65. History: 
  66.  
  67. V 1.0 Initial Amiga release
  68. V 1.1 Fixed bug in header file
  69. V 1.2 Updated archive with the sources of midifile V 1.11:
  70.  
  71.      (1) can now set the global variable Mf_interactive to 1 to prevent the
  72.          reading functions from looking for file and track headers
  73.      (2) can now write system exclusive data with
  74.          mf_write_midi_event(delta_time, system_exlusive, 0, data, size)
  75.      (3) changed definition of 'sequencer_specific' in midifile.h to 0x7f
  76.      (4) changed mf_write_tempo to take additional delta_time as first argument
  77.          (since delta need not be zero)
  78.      (5) added function mf_write_seqnum(unsigned long delta_time, unsigned seqnum)
  79.      (6) changed mf_write_midi_event to use running status
  80.      (7) removed the code to write an end of track meta event automatically
  81.          -- this must now be done by the user of the library (I changed
  82.          it because I need to be able to control the time delta of this
  83.           meta event)
  84.      (8) added global variables Mf_division, Mf_currtempo, Mf_realtime, which
  85.          are updated by the reading functions.  Mf_realtime is useful,
  86.          because Mf_currtime does not really measure time at all, since
  87.          its units change value at every tempo change.  Mf_realtime is
  88.          the midi-time elapsed in units of 1/16 of a centisecond (but it
  89.          does not handle smpte times)
  90.      (9) maintains a history of tempo settings to update Mf_currtempo,
  91.          to handle tempo tracks.
  92.      (10) if there is an Mf_error function, the error routine no longer
  93.          exits, leaving it to the application to do this.
  94.      (11) chanmessage skips over invalid c1 command bytes > 127 and
  95.          adjusts invalid c2 argument byte > 127 to 127.
  96.      (12) readmt returns EOF when it encounters a 0 or 0x1a byte instead of an 
  97.         expected header string (some midi files have padding at end).
  98.  
  99.